use serde::Deserialize;

#[derive(Deserialize, Clone, Debug)]
pub struct Food {
  /** 食物分类 0 卡路里 1 水 2 蛋白质 */
  pub category: u8,
  /** 快捷键 0 8 9 */
  pub key: u8,
  /** 使用时长 毫秒 */
  pub time_cast: i32,
  /** 重复次数 */
  pub repeat: i32,
  /** 右键后 y 方向偏移 */
  pub y_offset: i32,
}

#[derive(Deserialize, Clone, Debug)]
pub struct ShoeGlove {
  /** 快捷键 5 6 */
  pub key: u8,
  /** 使用时长 毫秒 */
  pub time_cast: i32,
  /** 重复次数 */
  pub repeat: i32,
  /** 右键后 y 方向偏移 */
  pub y_offset: i32,
  /** 是否启用维修 */
  pub enable: bool,
  /** 维修间隔 分钟 */
  pub interval: i64,
}

#[derive(Deserialize, Clone, Debug)]
pub struct Options {
  /// 类型 0 小推车 1 走路
  pub r#type: u8,
  pub sub_type: u8,
  /// 吃东西方式 0 背包快捷键 1 箱子中
  pub eat_type: u8,
  pub foods: Vec<Food>,
  pub shoe: ShoeGlove,
  pub glove: ShoeGlove,
  /// 缝纫工具所在列
  pub toolkits: Vec<i32>,
}

impl Options {
  pub fn default() -> Self {
    Options {
      r#type: 0,
      sub_type: 0,
      eat_type: 0,
      foods: vec![
        Food {
          category: 0,
          key: 8,
          time_cast: 4000,
          repeat: 3,
          y_offset: 0,
        },
        Food {
          category: 2,
          key: 9,
          time_cast: 11000,
          repeat: 2,
          y_offset: 0,
        },
        Food {
          category: 1,
          key: 0,
          time_cast: 4000,
          repeat: 5,
          y_offset: 0,
        },
      ],
      shoe: ShoeGlove {
        enable: true,
        time_cast: 4500,
        key: 6,
        repeat: 1,
        y_offset: 57,
        interval: 5,
      },
      glove: ShoeGlove {
        enable: true,
        time_cast: 4500,
        key: 5,
        repeat: 1,
        y_offset: 76,
        interval: 5,
      },
      toolkits: vec![],
    }
  }
}
